#ifndef __CAMERA_H__
#define __CAMERA_H__

#include "GameEngine/math/vec3f.h"
#include "GameEngine/OGLConfig/Screen.h"

static const float defaultFarClip=1000.0f;
static const float defaultNearClip=1.0f;
static const float defaultScreenAspect=(float)(SCREEN_WIDTH/2)/(float)(SCREEN_HEIGHT/2);
static const float defaultFOVY=30.0f;

class Camera {
public:
	Camera();
	void Projection3D();
	void glLookAt(Vec3f eye, Vec3f center, Vec3f up);
	void loadPerspectiveMatrix();
	void loadPerspectiveMatrix(float fovy, float aspect, float zNear, float zFar);
	Vec3f cameraPos;
	Vec3f cameraPosT;
	Vec3f cameraObjetivePos;
	Vec3f cameraObjetivePosT;

	float getFarClip();
	float getNearClip();
	PVRTMATRIXf getModelViewMatrix();

	void setFarClip(float zClip);

private:
	float farClip;
	float nearClip;
	float screenAspect;
	float fovY;

	PVRTMATRIXf fModelView;
};

#endif
